1. Field of the Invention
This invention relates to an apparatus and method for protecting software and, more particularly, relates to an apparatus and method for protecting programs or data placed in firmware such as a Read Only Memory (ROM) whereby the program or data is only available externally if it is accessed in a specific address sequence.
2. Description of the Prior Art
Software piracy flourishes. The unauthorized copying of computer tapes, floppy discs and other forms of software constitutes a threat to the integrity of computer manufacturers and distributors and to software houses. Copying has also occurred where algorithms or initializing data have been incorporated in firmware. Typically, the quantity of data placed in firmware is not great but it is often extremely crucial to the operation, for example, of video games. For factory programmed read-only memories (ROMs) or for field programmed read-only memories (PROMs) the program data may reveal crucial information about the operation of a system. One approach to protecting the data is to provide a fusible link on the array so that the data, once programmed, simply cannot be externally accessed. See, e.g., R. Birkner, et al, U.S. Pat. No. 4,124,899, "Programmable Read-Only Memory", and which is hereby incorporated by reference. This approach has the disadvantage that, once the fuse is opened, the PROM may not be altered and the use of diagnostic routines is inhibited.
Copy protection schemes fall into four broad categories: hardware dependent approaches, load format alteration, software that checks the environment as it executes, and software that executes through a "filter". In each case the protection schemes involve an interaction of software and hardware. Where software is used, a microprocesssor is necessarily involved so that one convenient technique of copying is to intercept the instructions and data supplied to the microprocessor. The various approaches that have been used to protect software are discussed in J. Commander, et al, "How Safe is Your Software", Microcomputing, July 1982, p. 60, which is hereby incorporated by reference.
Most commercially available microprocessors have been designed with the intent to obtain small die size and high speed operation. No on-board circuitry has been included to prevent software copying so as not to increase die size or reduce operating speed. If hardware-dependent software protection were added to microprocessors, then a master/slave relationship could be established between system software and application software. In the slave mode memory subunits could be partitioned into islands. Control could then be prevented from passing from one memory partition to another. If a program attempted to address memory locations outside its partition, an error message would be generated and the program attempting illegal access could be erased from memory. This approach is a sophisticated solution but would require special design of the integrated circuits. As far as simple firmware such as read-only memories are concerned, therefore, it is highly desirable to provide apparatus which will simply and reliably provide protection against copying.
It is therefore an object of the present invention to provide circuitry for use with firmware such as read only memories which requires the addresses to be accessed in a specified sequence in order for the access to be allowed.
It is a further object of the present invention to provide a means for address detection along with a cycle detection, sequencer to examine one or more sets of address inputs to determine the order in which addresses are accessed and to compare them with a predefined, correct sequence.
It is another object of the present invention to provide a method for detecting the sequence in which addresses of firmware are interrogated, comparing the sequence with the predefined correct sequence to determine and signify whether access is authorized.